Device 网络状态
Device 命名空间提供对当前设备硬件、系统环境、语言区域、屏幕信息、电池状态、方向感知、接近传感器以及网络接口等信息的访问能力,并提供相关状态变化的监听接口。
该 API 主要用于根据设备环境动态调整 UI、行为逻辑或系统能力使用方式。
网络状态与变化监听
Device 是全局命名空间,无需导入;也可以使用 import { Device } from "scripting",访问的是同一个对象。这三个方法用于主 App 中的活跃脚本。
快照字段:
getNetworkState() 等待真实系统路径回调,最多 10 秒;新建 monitor 不会伪造初始断网。监听异步发送初始快照,此后仅在公开字段变化时发送;同一函数重复注册会忽略。省略参数调用 removeNetworkChangeListener() 可移除当前 Device 对象的全部网络监听。脚本退出会清理监听和未完成查询;监听不会延长后台执行,也不保证挂起期间投递。
路径 satisfied 不代表 Internet、目标 TCP 服务、Bonjour 或 RSD 一定可达,应实际请求验证。接口不提供 SSID、蜂窝代际或飞行模式设置。原有 Device.networkInterfaces() 仍用于获取接口地址列表。
查询拒绝时可读取错误的 code:ERR_NETWORK_STATE_TIMEOUT(未收到首次系统事件)、ERR_NETWORK_STATE_LIMIT(超过 32 个待完成查询或 32 个不同监听)、ERR_PLATFORM_NOT_SUPPORTED(上下文不可用)、ERR_PRO_REQUIRED(访问被拒绝)。添加监听可能同步抛出适用的访问/数量错误和 ERR_INVALID_ARG_TYPE。移除始终可用于清理。访问被撤销后,下一次更新或调用会释放监听,不会把错误伪装成网络状态事件。
Orientation
表示设备当前的物理朝向。
说明
portrait:竖屏,Home 键在下(或标准竖屏方向)portraitUpsideDown:竖屏倒置landscapeLeft:横屏,设备向左旋转landscapeRight:横屏,设备向右旋转faceUp:设备平放,屏幕朝上faceDown:设备平放,屏幕朝下unknown:无法确定方向
InterfaceOrientation
表示App UI 的可旋转方向
说明
portrait:竖屏,Home 键在下(或标准竖屏方向)portraitUpsideDown:竖屏倒置landscape:横屏,设备向左旋转landscapeLeft:横屏,设备向左旋转landscapeRight:横屏,设备向右旋转all:所有可旋转方向allButUpsideDown:除了竖屏,所有可旋转方向
NetworkInterface
描述单个网络接口地址的信息。
字段说明
address:IP 地址netmask:子网掩码family:地址族,IPv4 或 IPv6mac:MAC 地址(部分系统或接口可能为 null)isInternal:是否为内部接口(如 loopback)cidr:CIDR 表示形式,例如192.168.1.10/24
BatteryState
表示当前电池状态。
说明
full:电量已充满charging:正在充电unplugged:未连接电源unknown:无法确定状态
Device Information
model
设备型号,例如 "iPhone"、"iPad"。
localizedModel
本地化后的设备型号名称。
appVersion / appBuildNumber
同步只读字符串,用于识别 Scripting App,扩展中的脚本也可读取。appVersion 对应 CFBundleShortVersionString,appBuildNumber 对应 CFBundleVersion。构建号保持字符串(可能含小数点或前导零)。无法读取宿主 App 时使用当前运行 bundle;字段缺失时返回空字符串。
Device 是注入的全局 API,无需导入;也支持已有的导入别名:
这两个字段表示 Scripting 本体的版本,与脚本自身版本、操作系统版本分别独立,不需要权限或网络访问。
systemVersion
当前操作系统版本号,例如 "18.2"。
systemName
操作系统名称,例如 "iOS"、"iPadOS"、"macOS"。
isiPad / isiPhone
指示当前设备是否为 iPad 或 iPhone。
screen
屏幕信息:
width:屏幕宽度(逻辑像素)height:屏幕高度(逻辑像素)scale:屏幕缩放比例(如 2、3)
Battery & Sensors
batteryState
当前电池状态。
batteryLevel
当前电量百分比,范围为 0.0 到 1.0。
proximityState
接近传感器状态,true 表示设备靠近用户(例如通话时贴近耳朵)。
Orientation & Layout
isLandscape / isPortrait / isFlat
isLandscape:是否处于横屏isPortrait:是否处于竖屏isFlat:设备是否平放(face up / face down)
orientation
当前设备物理方向。
supportedInterfaceOrientations
获取和设置当前支持的旋转方向。
示例
userConfiguredInterfaceOrientations
获取用户配置的旋转方向。你可以使用这个值的来设置supportedInterfaceOrientations以恢复为默认的旋转方向。
Appearance & Environment
colorScheme
当前系统颜色模式,例如浅色或深色模式。
isiOSAppOnMac
指示当前进程是否为运行在 macOS 上的 iPhone / iPad App(Mac Catalyst 或 iOS App on Mac)。
Locale & Language
systemLocale
当前系统 Locale,例如 "en_US"。
preferredLanguages
用户偏好的语言列表,例如:
systemLocales(已废弃)
已废弃,请使用 preferredLanguages。
systemLanguageTag
语言标签,例如 "en-US"。
systemLanguageCode
语言代码,例如 "en"。
systemCountryCode
国家代码,例如 "US"。
systemScriptCode
书写系统代码,例如 "Hans"(简体中文)。
Wake Lock
isWakeLockEnabled
查询当前是否启用了屏幕唤醒锁定(防止设备自动锁屏)。
setWakeLockEnabled
启用或禁用 Wake Lock。
说明:
- 仅在 Scripting App 内可用
- 启用后可防止设备自动休眠
Battery Listeners
addBatteryStateListener
监听电池状态变化。
removeBatteryStateListener
移除电池状态监听器。
- 未传入
callback时将移除所有监听器
addBatteryLevelListener
监听电量变化。
removeBatteryLevelListener
移除电量监听器。
Orientation Listeners
addOrientationListener
开始监听设备方向变化。
注意事项:
- 必须先调用该方法才能接收方向变化
- 系统方向锁开启时不会生效
removeOrientationListener
移除方向监听器。
- 未传入
callback时将停止所有方向监听并结束观察
Proximity Listeners
addProximityStateListener
监听接近传感器状态变化。
removeProximityStateListener
移除接近传感器监听器。
Network
networkInterfaces
获取当前设备的网络接口信息。
返回值说明:
- Key:接口名称(如
en0、lo0) - Value:该接口对应的地址信息数组
适用于网络诊断、本地 IP 获取、调试用途。
